package com.lovi.reflect;

import java.io.File;
import java.lang.reflect.Constructor;
/*
利用Class类的forName方法得到File类的class 对象
在控制台打印File类的所有构造器
通过newInstance的方法创建File对象，并创建d: \mynew.txt文件
 */
public class Test03 {
    public static void main(String[] args) {
        try {
            // 利用Class类的forName方法得到File类的class 对象
            Class<?> fileClass = Class.forName("java.io.File");

            // 在控制台打印File类的所有构造器
            Constructor<?>[] constructors = fileClass.getDeclaredConstructors();
            System.out.println("Constructors of File class:");
            for (Constructor<?> constructor : constructors) {
                System.out.println(constructor);
            }

            // 通过newInstance的方法创建File对象，并创建d: \mynew.txt文件
            // 使用构造器即File(String pathname)
            Constructor<?> constructor1 = fileClass.getDeclaredConstructor(String.class);
            File file = (File) constructor1.newInstance("d:\\mynew.txt");
            // 创建文件
            boolean isCreated = file.createNewFile();
            if (isCreated) {
                System.out.println("File created successfully.");
            } else {
                System.out.println("File already exists.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
